home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 4_0 / NEWTEXTF / NEWTEXTF.C
C/C++ Source or Header  |  1991-01-09  |  2KB  |  74 lines

  1. #include "HyperCard.h"
  2.  
  3. pascal    int        FSDelete (Str255, int);
  4. pascal    int        Create (Str255, int, OSType, OSType);
  5.  
  6.         void    FileErr (XCmdBlockPtr paramPtr, int err);
  7.  
  8. /*    XCMD, newTextFile, id 20006, attr 20, custom header    */
  9.  
  10. pascal    void    main (XCmdBlockPtr paramPtr)
  11.  
  12.             {Str255            fname;
  13.             OSType            theCreator;
  14.             int                err;
  15.  
  16.             if (paramPtr->paramCount != 2)
  17.                 {HyperError (paramPtr, "newTextFile needs 2 params.");
  18.                 return;}
  19.             HandleToStr255 (paramPtr->params [0], fname);
  20.             if (!(*fname))
  21.                 {FileErr (paramPtr, -37);
  22.                 return;}
  23.             theCreator = (OSType) HandleToResType (paramPtr->params [1]);
  24.             if (theCreator == '    ')
  25.                 {HyperError (paramPtr, "Bad file creator.");
  26.                 return;}
  27.             err = FSDelete (fname, 0);
  28.             if (err && err != -43)
  29.                 {FileErr (paramPtr, err);
  30.                 return;}
  31.             if (err = Create (fname, 0, theCreator, 'TEXT'))
  32.                 FileErr (paramPtr, err);
  33.             return;}
  34.  
  35.         void    FileErr (XCmdBlockPtr paramPtr, int err)
  36.  
  37.             {SendHCMessage (paramPtr, "beep");
  38.             switch (err)
  39.                 {case -120:
  40.                     paramPtr->returnValue = CToNewHandle ("Folder not found.");
  41.                     break;
  42.                 case -58:
  43.                     paramPtr->returnValue = CToNewHandle ("External file system.");
  44.                     break;
  45.                 case -47:
  46.                     paramPtr->returnValue = CToNewHandle ("File busy.");
  47.                     break;
  48.                 case -46:
  49.                     paramPtr->returnValue = CToNewHandle ("Software volume lock.");
  50.                     break;
  51.                 case -45:
  52.                     paramPtr->returnValue = CToNewHandle ("File locked.");
  53.                     break;
  54.                 case -44:
  55.                     paramPtr->returnValue = CToNewHandle ("Hardware volume lock.");
  56.                     break;
  57.                 case -37:
  58.                     paramPtr->returnValue = CToNewHandle ("Bad file name.");
  59.                     break;
  60.                 case -36:
  61.                     paramPtr->returnValue = CToNewHandle ("I/O error.");
  62.                     break;
  63.                 case -35:
  64.                     paramPtr->returnValue = CToNewHandle ("No such volume.");
  65.                     break;
  66.                 case -34:
  67.                     paramPtr->returnValue = CToNewHandle ("Disk full.");
  68.                     break;
  69.                 case -33:
  70.                     paramPtr->returnValue = CToNewHandle ("Folder full.");
  71.                     break;
  72.                 default:
  73.                     paramPtr->returnValue = CToNewHandle ("System error.");}
  74.             return;}